home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / gfa / fst30 / fidost3o.lst
Encoding:
File List  |  1994-07-30  |  52.2 KB  |  2,020 lines

  1. '
  2. ' ************************
  3. ' ***** FIDOST  .PRG *****
  4. ' ************************
  5. '
  6. ' ******   V 3.0    ******
  7. '
  8. ' Dieses  PRG  ersetzt das
  9. ' FIDO24ST - Packet.
  10. '
  11. '   (C)92 by sector99
  12. '
  13. ' ******* 08/03/92 *******
  14. '
  15. '
  16. CLS
  17. DEFMOUSE 0
  18. '
  19. x_c%=INT{L~A-44}+1        ! Anz. der Chars pro Zeile
  20. y_c%=INT{L~A-42}+1        ! Anz. der Zeilen
  21. x_h%=INT{L~A-12}          ! Anz. der horizontalen Pixel
  22. y_h%=INT{L~A-4}           ! Anz. der vertikalen Pixel
  23. x_z%=x_h%/x_c%            !INT{L~A+80}          ! Breite eines Zeichens
  24. y_z%=y_h%/y_c%            !INT{L~A+82}          ! Hoehe eines Zeichens
  25. '
  26. ' CHDRIVE "J:\"   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  27. old.drive$=CHR$(65+GEMDOS(25))
  28. old.dir$=DIR$(0)
  29. '
  30. call_basepage
  31. '
  32. '
  33. PROCEDURE call_basepage
  34.   ' *****************************************************
  35.   ' Es wird die Basepage auf Eingaben untersucht, die aus
  36.   ' folgenden Kuerzel bestehen koennen :
  37.   '                                     POINT - Alles f. Point-list
  38.   '                                     NODE  - Alles f. Node-list
  39.   '                                     LIST  - Erst. Nodelist-Inh.
  40.   '                                   NOAUTO  - Umgeht aktives AUTO
  41.   '                                   CUTLOG  - Kuerzt das LOG-File
  42.   '                                   MNL x:yy- Erstellt kl. NL
  43.   '
  44.   LOCAL cmdline$,adr%,pos|,arg|,c%
  45.   IF BYTE{BASEPAGE+128}>0
  46.     adr%=BASEPAGE+129
  47.     DO UNTIL BYTE{adr%}=13 OR BYTE{adr%}=0
  48.       cmdline$=cmdline$+CHR$(BYTE{adr%})
  49.       INC adr%
  50.     LOOP
  51.     cmdline$=TRIM$(cmdline$)
  52.     INC argc|
  53.     DIM argv$(argc|)
  54.     FOR arg|=1 TO argc|-1
  55.       pos|=INSTR(cmdline$," ")
  56.       argv$(arg|)=TRIM$(LEFT$(cmdline$,pos|))
  57.       cmdline$=RIGHT$(cmdline$,LEN(cmdline$)-pos|)
  58.     NEXT arg|
  59.     argv$(argc|)=cmdline$
  60.     bp$=argv$(argc|)
  61.     bp$=UPPER$(bp$)
  62.     ERASE argv$()
  63.   ENDIF
  64.   variable
  65.   '
  66.   IF LEN(bp$)<>0
  67.     IF MID$(bp$,1,6)<>"NOAUTO" AND MID$(bp$,1,5)<>"POINT" AND MID$(bp$,1,4)<>"NODE" AND MID$(bp$,1,4)<>"LIST" AND MID$(bp$,1,6)<>"CUTLOG" AND MID$(bp$,1,4)<>"MNL " AND EXIST(bp$)
  68.       cfg$=bp$
  69.     ENDIF
  70.     IF MID$(bp$,1,6)="NOAUTO" OR MID$(bp$,1,5)="POINT" OR MID$(bp$,1,4)="NODE" OR MID$(bp$,1,4)="LIST" OR MID$(bp$,1,6)="CUTLOG" OR MID$(bp$,1,4)="MNL "
  71.       na!=TRUE
  72.     ENDIF
  73.   ENDIF
  74.   '
  75.   lade_cfg
  76.   '
  77.   IF v.var!(23)
  78.     anfang
  79.   ENDIF
  80.   main_menu
  81.   fenster_init
  82.   IF v.var!(1)=FALSE OR na!
  83.     IF MID$(bp$,1,5)="POINT"
  84.       i_zeile(yb$+"POINT")
  85.       titel(" POINT"+act$)
  86.       point_act
  87.     ELSE IF MID$(bp$,1,4)="NODE"
  88.       i_zeile(yb$+"NODE")
  89.       titel(" NODE"+act$)
  90.       node_act
  91.     ELSE IF MID$(bp$,1,4)="LIST"
  92.       i_zeile(yb$+"LIST")
  93.       titel(" LISTZONE"+act$)
  94.       zone_list
  95.     ELSE IF MID$(bp$,1,6)="CUTLOG" AND k.var!(8)
  96.       i_zeile(yb$+cfg.v$(20))
  97.       cut_log
  98.       log_end
  99.       end_screen(0)
  100.     ELSE IF MID$(bp$,1,4)="MNL " AND k.var!(6) AND k.var!(4)
  101.       test(cfg.k$(4)+cfg.k$(6)+".*")
  102.       IF var1%=0 AND suffix%<>0
  103.         nl!=TRUE
  104.         bp$=TRIM$(MID$(bp$,INSTR(bp$,CHR$(32))))
  105.         IF VAL(LEFT$(bp$))>0
  106.           i_zeile(yb$+"MNL")
  107.           titel(" MNL"+act$)
  108.           z$=LEFT$(bp$)
  109.           cfg.k$(9)=bp$
  110.           IF VAL(MID$(bp$,INSTR(bp$,CHR$(58))+1))>0
  111.             r$=MID$(bp$,INSTR(bp$,CHR$(58))+1)
  112.             i_zeile("Create a little NODELIST ("+cfg.k$(9)+")")
  113.             my_list
  114.           ELSE IF MID$(bp$,INSTR(bp$,CHR$(58))+1)="ALL"
  115.             i_zeile("Create a little NODELIST ("+cfg.k$(9)+")")
  116.             big_list
  117.           ELSE
  118.             f_zeile("?  ERROR in CommandLine")
  119.             log_end
  120.             end_screen(1)
  121.           ENDIF
  122.         ELSE
  123.           f_zeile("?  ERROR in CommandLine")
  124.           log_end
  125.           end_screen(1)
  126.         ENDIF
  127.       ELSE
  128.         f_zeile("?  Can't find a NODELIST")
  129.         log_end
  130.         end_screen(1)
  131.       ENDIF
  132.     ELSE
  133.       INFOW #1," Your CHOICE"
  134.       PRINT SPACE$(x_c%/2-10);"0 - Return to DESKTOP"
  135.       PRINT SPACE$(x_c%/2-10);"1 - POINT - Activity"
  136.       PRINT SPACE$(x_c%/2-10);"2 - NODE - Activity"
  137.       PRINT SPACE$(x_c%/2-10);"3 - LIST Nodelist"
  138.       PRINT SPACE$(x_c%/2-10);"4 - CUT Log-File"
  139.       '  PRINT SPACE$(x_c%/2-10);"? - Phone - Cost"
  140.       '  PRINT SPACE$(x_c%/2-10);"? - MSG - Cruncher"
  141.       REPEAT
  142.       UNTIL INP?(2)
  143.       CLS
  144.       clear_screen
  145.       taste%=INP(2)
  146.       IF taste%<48 OR taste%>52
  147.         f_zeile("?  Why do you select '"+CHR$(taste%)+"'   <KEY>")
  148.         ~INP(2)
  149.         log_end
  150.         end_screen(1)
  151.       ENDIF
  152.       IF taste%=48
  153.         i_zeile("Return to DESKTOP")
  154.         log_end
  155.         end_screen(1)
  156.       ENDIF
  157.       IF taste%=49
  158.         titel(" POINT"+act$)
  159.         point_act
  160.       ENDIF
  161.       IF taste%=50
  162.         titel(" NODE"+act$)
  163.         node_act
  164.       ENDIF
  165.       IF taste%=51
  166.         titel(" LISTZONE"+act$)
  167.         zone_list
  168.       ENDIF
  169.       IF taste%=52 AND k.var!(8)
  170.         cut_log
  171.       ENDIF
  172.     ENDIF
  173.   ELSE
  174.     IF v.var!(20) AND k.var!(8)
  175.       cut_log
  176.     ENDIF
  177.     IF pre.var!
  178.       ext!=TRUE
  179.       titel(" PRE"+act$)
  180.       i_zeile(st$+"PRE"+act$)
  181.       REPEAT
  182.         titel(" PRE"+act$+" No."+STR$(anz%+1))
  183.         i_zeile("[ PRE"+act$+" No."+STR$(anz%+1)+" ]")
  184.         utility("PRE",8)
  185.         INC anz%
  186.       UNTIL anz%=16 OR pre$(anz%)=CHR$(255)
  187.       i_zeile(en$+"PRE"+act$)
  188.       ext!=FALSE
  189.     ENDIF
  190.     ERASE pre$()
  191.     IF v.var!(24)=FALSE
  192.       titel(" POINT"+act$)
  193.       point_act
  194.     ELSE
  195.       i_zeile("[ POINT - Activities are disabled ]")
  196.     ENDIF
  197.     IF v.var!(25)=FALSE
  198.       titel(" NODE"+act$)
  199.       node_act
  200.     ELSE
  201.       i_zeile("[ NODE  - Activities are disabled ]")
  202.     ENDIF
  203.     anz%=0
  204.     IF last.var!
  205.       DIM pre$(15)
  206.       ext!=TRUE
  207.       titel(" LAST"+act$)
  208.       i_zeile(st$+"LAST"+act$)
  209.       REPEAT
  210.         pre$(anz%)=last$(anz%)
  211.         titel(" LAST"+act$+" No."+STR$(anz%+1))
  212.         i_zeile("[ LAST"+act$+" No."+STR$(anz%+1)+" ]")
  213.         utility("LAST",9)
  214.         INC anz%
  215.       UNTIL anz%=16 OR last$(anz%)=CHR$(255)
  216.       i_zeile(en$+"LAST"+act$)
  217.       ext!=FALSE
  218.     ENDIF
  219.     ERASE pre$(),last$()
  220.   ENDIF
  221.   DELAY del|
  222.   i_zeile("End of my work...")
  223.   taste
  224.   log_end
  225.   end_screen(0)
  226. RETURN
  227. '
  228. PROCEDURE anfang
  229.   LOCAL x%,y%,zu|,anz%,durch%,d%
  230.   x%=INT(x_c%/2)
  231.   y%=INT(y_c%/2)
  232.   '
  233.   IF EXIST(bcfg$)
  234.     PRINT AT(x%-2,2);"Hi,"
  235.     DIM sys_name$(0)
  236.     OPEN "I",#1,bcfg$
  237.     REPEAT
  238.       RECALL #1,sys_name$(),1,dummy%
  239.       IF UPPER$(MID$(sys_name$(0),1,6))="SYSOP "
  240.         sys_name$(0)=TRIM$(sys_name$(0))
  241.         sys_name$(0)=TRIM$(MID$(sys_name$(0),INSTR(sys_name$(0),CHR$(32))))
  242.         sys_name$(0)=MID$(sys_name$(0),1,INSTR(sys_name$(0),CHR$(32)))
  243.         PRINT AT((x%-LEN(sys_name$(0))/2),4);sys_name$(0)
  244.         PRINT AT((x%-LEN(sys_name$(0))/2)-2,6);"YOU are using..."
  245.       ENDIF
  246.     UNTIL EOF(#1)
  247.     CLOSE #1
  248.   ENDIF
  249.   REPEAT
  250.     READ d%
  251.     zufall(d%)
  252.     INC durch%
  253.   UNTIL durch%=18
  254.   DATA 91,32,70,73,68,79,45,83,84,32,93,32,32,86,51,46,48,48
  255.   PRINT AT(x%+zu|-28,y%);
  256.   DELAY 5
  257.   PRINT CHR$(27)+"p";
  258.   PRINT " is PUBLIC DOMAIN !!! ";
  259.   FOR anz%=0 TO 31
  260.     PRINT AT(x%-15+anz%,y%-4);" "
  261.     PRINT AT(x%-15+anz%,y%+2);" "
  262.   NEXT anz%
  263.   FOR anz%=0 TO 4
  264.     PRINT AT(x%-15,y%-3+anz%);" "
  265.     PRINT AT(x%+16,y%-3+anz%);" "
  266.   NEXT anz%
  267.   PRINT CHR$(27)+"q"
  268.   DELAY 5
  269.   CLS
  270.   ERASE sys_name$()
  271. RETURN
  272. '
  273. PROCEDURE zufall(zuf|)
  274.   REPEAT
  275.     intro1$=CHR$(RANDOM(220)+32)
  276.     PRINT AT(x%+zu|-8,y%-2);intro1$
  277.   UNTIL intro1$=CHR$(zuf|)
  278.   PRINT CHR$(7)
  279.   INC zu|
  280. RETURN
  281. '
  282. PROCEDURE taste
  283.   IF v.var!(19)
  284.     PRINT "Please select a <KEY>..."
  285.     ~INP(2)
  286.   ENDIF
  287. RETURN
  288. '
  289. PROCEDURE utility(anf$,pa%)
  290.   dr$=MID$(pre$(anz%),INSTR(pre$(anz%),CHR$(32))+1)
  291.   IF MID$(pre$(anz%),1,pa%)=anf$+"CALL "
  292.     IF INSTR(dr$,CHR$(32))=0
  293.       comm$=""
  294.     ELSE
  295.       comm$=TRIM$(MID$(dr$,INSTR(dr$,CHR$(32))))
  296.       dr$=MID$(dr$,1,INSTR(dr$,CHR$(32)))
  297.     ENDIF
  298.     IF EXIST(dr$)
  299.       lauf$=LEFT$(dr$)
  300.       prg$=TRIM$(MID$(dr$,RINSTR(dr$,CHR$(92))+1))
  301.       dr$=MID$(dr$,INSTR(dr$,CHR$(92))+1)
  302.       IF RINSTR(dr$,CHR$(92))<>0
  303.         dr$=MID$(dr$,1,RINSTR(dr$,CHR$(92))-1)
  304.       ELSE
  305.         dr$=""
  306.       ENDIF
  307.       i_zeile("Execute "+UPPER$(prg$)+" "+comm$)
  308.       starte
  309.     ELSE
  310.       f_zeile("!  Can't execute "+dr$)
  311.     ENDIF
  312.   ENDIF
  313.   IF MID$(pre$(anz%),1,pa%-1)=anf$+"DEL "
  314.     del_file(dr$)
  315.   ENDIF
  316.   IF MID$(pre$(anz%),1,pa%)=anf$+"COPY "
  317.     copy(TRIM$(MID$(dr$,1,INSTR(dr$,CHR$(32)))),TRIM$(MID$(dr$,INSTR(dr$,CHR$(32)))))
  318.   ENDIF
  319.   IF MID$(pre$(anz%),1,pa%-1)=anf$+"REN "
  320.     source$=TRIM$(UPPER$(MID$(dr$,1,INSTR(dr$,CHR$(32)))))
  321.     dest$=TRIM$(UPPER$(MID$(dr$,INSTR(dr$,CHR$(32)))))
  322.     dest$=MID$(dest$,RINSTR(dest$,CHR$(92)))
  323.     IF dest$=""
  324.       f_zeile("!  Error in "+anf$+"REN")
  325.     ELSE
  326.       IF EXIST(source$)
  327.         dest$=MID$(source$,1,RINSTR(source$,CHR$(92)))+MID$(dest$,RINSTR(dest$,CHR$(92))+1)
  328.         d_file(dest$)
  329.         i_zeile("Rename "+source$+" as "+dest$)
  330.         RENAME source$ AS dest$
  331.       ENDIF
  332.     ENDIF
  333.   ENDIF
  334. RETURN
  335. '
  336. PROCEDURE variable
  337.   LOCAL anz|
  338.   '
  339.   DIM monat$(12)
  340.   monat$(1)="Jan"
  341.   monat$(2)="Feb"
  342.   monat$(3)="Mar"
  343.   monat$(4)="Apr"
  344.   monat$(5)="May"
  345.   monat$(6)="Jun"
  346.   monat$(7)="Jul"
  347.   monat$(8)="Aug"
  348.   monat$(9)="Sep"
  349.   monat$(10)="Oct"
  350.   monat$(11)="Nov"
  351.   monat$(12)="Dec"
  352.   MODE &X0
  353.   '
  354.   xk|=11
  355.   DIM cfg.k$(xk|),k.var!(xk|)
  356.   cfg.k$(0)="PDIFF"
  357.   cfg.k$(1)="NPDIFF"
  358.   cfg.k$(2)="PL"
  359.   cfg.k$(3)="INBOUND"
  360.   cfg.k$(4)="NDIFF"
  361.   cfg.k$(5)="NNDIFF"
  362.   cfg.k$(6)="NL"
  363.   cfg.k$(7)="FIDOUSER"
  364.   cfg.k$(8)="LOG"
  365.   cfg.k$(9)="MNL"
  366.   cfg.k$(10)="COPY"
  367.   cfg.k$(11)="MAXDIFF"
  368.   xv|=27
  369.   DIM cfg.v$(xv|),v.var!(xv|)
  370.   cfg.v$(0)="PRVNL"
  371.   cfg.v$(1)="AUTO"
  372.   cfg.v$(2)="DELAPDIFF"
  373.   cfg.v$(3)="DELANDIFF"
  374.   cfg.v$(4)="DELPDIFF"
  375.   cfg.v$(5)="DELNDIFF"
  376.   cfg.v$(6)="CAPDIFF"
  377.   cfg.v$(7)="CANDIFF"
  378.   cfg.v$(8)="CPDIFF"
  379.   cfg.v$(9)="CNDIFF"
  380.   cfg.v$(10)="BUPL"
  381.   cfg.v$(11)="BUNL"
  382.   cfg.v$(12)="BUFU"
  383.   cfg.v$(13)="CNL"
  384.   cfg.v$(14)="ALLP"
  385.   cfg.v$(15)="ALLN"
  386.   cfg.v$(16)="HELP"
  387.   cfg.v$(17)="TIMER"
  388.   cfg.v$(18)="CLOCK"
  389.   cfg.v$(19)="WAIT"
  390.   cfg.v$(20)="CUTLOG"
  391.   cfg.v$(21)="QCHECK"
  392.   cfg.v$(22)="SPLITLOG"
  393.   cfg.v$(23)="INTRO"
  394.   cfg.v$(24)="NOPOINT"
  395.   cfg.v$(25)="NONODE"
  396.   cfg.v$(26)="GETPL"
  397.   cfg.v$(27)="GETNL"
  398.   xp|=4
  399.   DIM cfg.p$(xp|),p.var!(xp|)
  400.   cfg.p$(0)="NLCOMP"
  401.   cfg.p$(1)="ARC"
  402.   cfg.p$(2)="LHARC"
  403.   cfg.p$(3)="ZIP"
  404.   cfg.p$(4)="ARJ"
  405.   '
  406.   st$="Start :  "
  407.   en$="End   :  "
  408.   act$=" - Activities"
  409.   pu$="POINT - Updating"
  410.   nu$="NODE - Updating"
  411.   yb$="Your Basepage : "
  412.   '
  413.   n.bt$="LOG.$$$"
  414.   ende1$="End of"
  415.   ende2$="Lost Carrier"
  416.   ende3$="Timeout"
  417.   ende4$="Remote didn't respond"
  418.   ende5$="Keyboard"
  419.   ende6$="Session with"
  420.   '
  421.   DIM pre$(15),last$(15),point$(15),node$(15),ppoint$(15),pnode$(15)
  422.   cfg$="FIDOST.CFG"
  423.   version$="V3.0"          ! Bei offizieller Version
  424.   bcfg$="BINKLEY.CFG"
  425.   fst$="FIDO-ST"
  426.   tw1$=" [ FIDOST - Information Area ] "
  427.   tw2$=" [ FIDOST - Error Area ] "
  428.   TITLEW #1,tw1$
  429.   INFOW #1," "
  430.   TITLEW #2,tw2$
  431.   INFOW #2," "
  432. RETURN
  433. '
  434. PROCEDURE main_menu
  435.   PRINT CHR$(27)+"p";
  436.   PRINT " "+fst$+"   "+version$+" ";CHR$(27)+"q";
  437.   PRINT SPACE$(x_c%-LEN(fst$+version$)-27);"(c)'92  by  G. Paczia"
  438.   PRINT SPACE$(x_c%-22);"( FIDO 2:241/4407.7 )"
  439.   PRINT AT(2,2);"Use "+cfg$
  440. RETURN
  441. '
  442. PROCEDURE fenster_init
  443.   LOCAL anz%
  444.   OPENW #2,x_z%,(y_h%/2)+y_z%,x_h%-(2*x_z%),(y_h%-(4*y_z%))/2,25  !473
  445.   clear_screen
  446.   OPENW #1,x_z%,2*y_z%,x_h%-(2*x_z%),(y_h%-(4*y_z%))/2,25       !473
  447.   clear_screen
  448. RETURN
  449. '
  450. PROCEDURE clear_screen
  451.   LOCAL cs%
  452.   FOR cs%=1 TO INT(y_h%/y_z%)
  453.     PRINT
  454.   NEXT cs%
  455. RETURN
  456. '
  457. PROCEDURE conf_timer(vt!)
  458.   IF v.var!(17)
  459.     IF vt!
  460.       t1%=TIMER/200
  461.     ELSE
  462.       t2%=TIMER/200
  463.       t3%=t2%-t1%
  464.       zeit
  465.       i_zeile("[ Convert-Time : "+STR$(t3%)+" sec ]")
  466.     ENDIF
  467.   ENDIF
  468. RETURN
  469. '
  470. PROCEDURE zeit
  471.   IF v.var!(18)
  472.     uhr$=TIME$
  473.   ENDIF
  474. RETURN
  475. '
  476. PROCEDURE cut_log
  477.   LOCAL var%,cta%,ctb%,ctc%,ctp$,dim%,dim1%,zeile$,con_str$
  478.   TOPW #1
  479.   INFOW #1," Cut "+cfg.k$(8)
  480.   ctp$=MID$(cfg.k$(8),1,RINSTR(cfg.k$(8),CHR$(92)))
  481.   n.bt$=ctp$+n.bt$
  482.   var%=FSFIRST(cfg.k$(8),0)
  483.   old.len%={FGETDTA()+26}
  484.   IF var%=0 AND old.len%>0
  485.     dim%=SUCC({FGETDTA()+26}/10)
  486.     DIM old_zeile$(dim%)
  487.     i_zeile("Loading "+cfg.k$(8))
  488.     OPEN "I",#5,cfg.k$(8)
  489.     RECALL #5,old_zeile$(),dim%,dummy%
  490.     CLOSE #5
  491.     dim1%=dummy%
  492.     '
  493.     INFOW #1," Cut "+cfg.k$(8)+" [ 1.Pass ]"
  494.     i_zeile("Analyse "+cfg.k$(8)+" [ 1.Pass ]")
  495.     OPEN "O",#7,n.bt$
  496.     REPEAT
  497.       IF LEFT$(old_zeile$(cta%))=CHR$(42) OR LEFT$(old_zeile$(cta%))=CHR$(35) OR LEFT$(old_zeile$(cta%))=CHR$(32)
  498.         IF MID$(old_zeile$(cta%),19,4)="BINK"
  499.           IF MID$(old_zeile$(cta%),24,10)="Processing" AND MID$(old_zeile$(cta%+1),24,7)="Dialing"
  500.             PRINT
  501.             PRINT old_zeile$(cta%)
  502.             PRINT old_zeile$(cta%+1)
  503.             PRINT #7
  504.             PRINT #7,old_zeile$(cta%)
  505.             PRINT #7,old_zeile$(cta%+1)
  506.           ELSE IF MID$(old_zeile$(cta%),24,7)="Connect"
  507.             PRINT old_zeile$(cta%)
  508.             PRINT #7,old_zeile$(cta%)
  509.           ELSE IF MID$(old_zeile$(cta%),24,6)=ende1$ OR MID$(old_zeile$(cta%),24)=ende2$ OR MID$(old_zeile$(cta%),24)=ende3$ OR MID$(old_zeile$(cta%),24)=ende4$ OR MID$(old_zeile$(cta%),24,8)=ende5$
  510.             PRINT old_zeile$(cta%)
  511.             PRINT #7,old_zeile$(cta%)
  512.           ELSE IF MID$(old_zeile$(cta%),24,12)=ende6$
  513.             PRINT old_zeile$(cta%)
  514.             PRINT #7,old_zeile$(cta%)
  515.           ENDIF
  516.         ELSE IF MID$(old_zeile$(cta%),19,4)="RFUS"
  517.           IF MID$(old_zeile$(cta%),24,7)="Connect"
  518.             PRINT
  519.             PRINT old_zeile$(cta%)
  520.             PRINT #7
  521.             PRINT #7,old_zeile$(cta%)
  522.           ELSE IF MID$(old_zeile$(cta%),24)="Online" OR MID$(old_zeile$(cta%),24)="Offline"
  523.             PRINT old_zeile$(cta%)
  524.             PRINT #7,old_zeile$(cta%)
  525.           ENDIF
  526.         ENDIF
  527.       ENDIF
  528.       INC cta%
  529.     UNTIL cta%-1=dim1%
  530.     CLOSE #7
  531.     ERASE old_zeile$()
  532.     KILL cfg.k$(8)
  533.     RENAME n.bt$ AS cfg.k$(8)
  534.     ~FSFIRST(cfg.k$(8),0)
  535.     IF {FGETDTA()+26}>0
  536.       dim%=SUCC({FGETDTA()+26}/10)
  537.       DIM old_zeile$(dim%)
  538.       CLS
  539.       OPEN "I",#5,cfg.k$(8)
  540.       RECALL #5,old_zeile$(),dim%,dummy%
  541.       CLOSE #5
  542.       dim1%=dummy%
  543.       INFOW #1," Cut "+cfg.k$(8)+" [ 2.Pass ]"
  544.       i_zeile("Analyse "+cfg.k$(8)+" [ 2.Pass ]")
  545.       cta%=0
  546.       dat%=VAL(MID$(DATE$,4,2))
  547.       dat_str$=monat$(dat%)
  548.       handle|=7
  549.       OPEN "O",#handle|,n.bt$
  550.       REPEAT
  551.         IF MID$(old_zeile$(cta%),24,10)="Processing"
  552.           IF LEN(old_zeile$(cta%+2))<>0 AND LEN(old_zeile$(cta%+3))<>0
  553.             IF v.var!(22)
  554.               split_log
  555.             ENDIF
  556.             PRINT
  557.             PRINT #handle|
  558.             REPEAT
  559.               PRINT old_zeile$(cta%)
  560.               PRINT #handle|,old_zeile$(cta%)
  561.               INC cta%
  562.             UNTIL LEN(old_zeile$(cta%))=0
  563.             IF vs!
  564.               CLOSE #8
  565.               vs!=FALSE
  566.               handle|=7
  567.             ENDIF
  568.             cta%=cta%-1
  569.           ENDIF
  570.         ELSE IF MID$(old_zeile$(cta%),19,4)="RFUS"
  571.           IF v.var!(22)
  572.             split_log
  573.           ENDIF
  574.           PRINT
  575.           PRINT #handle|
  576.           REPEAT
  577.             PRINT old_zeile$(cta%)
  578.             PRINT #handle|,old_zeile$(cta%)
  579.             INC cta%
  580.           UNTIL LEN(old_zeile$(cta%))=0
  581.           IF vs!
  582.             CLOSE #8
  583.             vs!=FALSE
  584.             handle|=7
  585.           ENDIF
  586.         ENDIF
  587.         INC cta%
  588.       UNTIL cta%-1=dim1%
  589.       CLOSE #7
  590.       ERASE old_zeile$()
  591.       KILL cfg.k$(8)
  592.       RENAME n.bt$ AS cfg.k$(8)
  593.       ~FSFIRST(cfg.k$(8),0)
  594.     ENDIF
  595.     '
  596.     new.len%={FGETDTA()+26}
  597.     log_anf
  598.     i_zeile("Old length ("+cfg.k$(8)+") : "+STR$(old.len%))
  599.     i_zeile("New length ("+cfg.k$(8)+") : "+STR$(new.len%))
  600.   ENDIF
  601. RETURN
  602. '
  603. PROCEDURE split_log
  604.   IF dat_str$<>MID$(old_zeile$(cta%),6,3)
  605.     vs!=TRUE
  606.     handle|=8
  607.     IF vs1!=FALSE
  608.       INFOW #1," Split-Log is active..."
  609.       vs1!=TRUE
  610.     ENDIF
  611.     IF EXIST(ctp$+"BT_"+UPPER$(MID$(old_zeile$(cta%),6,3))+".LOG")
  612.       OPEN "A",#handle|,ctp$+"BT_"+UPPER$(MID$(old_zeile$(cta%),6,3))+".LOG"
  613.     ELSE
  614.       OPEN "O",#handle|,ctp$+"BT_"+UPPER$(MID$(old_zeile$(cta%),6,3))+".LOG"
  615.     ENDIF
  616.   ENDIF
  617. RETURN
  618. '
  619. PROCEDURE delete_diff(diff_name$)
  620.   LOCAL anz.d%,anz.diff%
  621.   IF k.var!(10) AND k.var!(11)
  622.     maxdiff%=VAL(cfg.k$(11))
  623.     IF maxdiff%>0
  624.       var%=FSFIRST(diff_name$,0)
  625.       IF var%=0
  626.         REPEAT
  627.           INC anz.diff%
  628.           var%=FSNEXT()
  629.         UNTIL var%<>0
  630.         IF maxdiff%<anz.diff%
  631.           DIM d.zeile$(anz.diff%)
  632.           ~FSFIRST(diff_name$,0)
  633.           REPEAT
  634.             INC anz.d%
  635.             d.zeile$(anz.d%)=STR$(CARD{FGETDTA()+24})+" "+CHAR{FGETDTA()+30}
  636.             ~FSNEXT()
  637.           UNTIL anz.d%=anz.diff%
  638.           QSORT d.zeile$()
  639.           i_zeile("You want to have "+STR$(maxdiff%)+" "+npd$+"s")
  640.           i_zeile("I found "+STR$(anz.diff%)+" and delete "+STR$(anz.diff%-maxdiff%))
  641.           FOR anz.d%=1 TO anz.diff%-maxdiff%
  642.             IF v.var!(16)
  643.               i_zeile("Deleted : "+MID$(d.zeile$(anz.d%),INSTR(d.zeile$(anz.d%),CHR$(32))+1))
  644.             ENDIF
  645.             KILL cfg.k$(10)+MID$(d.zeile$(anz.d%),INSTR(d.zeile$(anz.d%),CHR$(32))+1)
  646.           NEXT anz.d%
  647.           IF v.var!(16)
  648.             i_zeile("Now you have "+STR$(maxdiff%)+" "+npd$+"s")
  649.           ENDIF
  650.           ERASE d.zeile$()
  651.         ELSE
  652.           IF v.var!(16)
  653.             f_zeile("!  Not enough "+diff_name$+" to delete")
  654.           ENDIF
  655.         ENDIF
  656.       ELSE
  657.         IF v.var!(16)
  658.           f_zeile("!  Can't find a "+diff_name$+" to delete")
  659.         ENDIF
  660.       ENDIF
  661.     ENDIF
  662.   ENDIF
  663. RETURN
  664. '
  665. PROCEDURE starte
  666.   comm$=CHR$(LEN(comm$))+comm$
  667.   CHDRIVE lauf$
  668.   CHDIR "\"
  669.   CHDIR dr$
  670.   close_screen
  671.   PRINT AT(1,1);
  672.   RESERVE 20480
  673.   EXEC 0,prg$,comm$,""
  674.   RESERVE
  675.   PRINT AT(1,1);
  676.   PRINT CHR$(27)+"f";
  677.   CLS
  678.   CHDRIVE old.drive$
  679.   CHDIR "\"
  680.   CHDIR old.dir$
  681.   main_menu
  682.   OPENW 2
  683.   clear_screen
  684.   OPENW 1
  685.   clear_screen
  686. RETURN
  687. '
  688. PROCEDURE show_error
  689.   IF ch!=FALSE
  690.     close_screen
  691.     PRINT "  ERRORs in ";cfg$;" :"
  692.     PRINT
  693.   ENDIF
  694.   ch!=TRUE
  695. RETURN
  696. '
  697. PROCEDURE check_drive(cdr$)
  698.   IF MID$(cdr$,2,1)<>CHR$(58)
  699.     show_error
  700.     PRINT "  ?  Missing Drive :  "+CHR$(27)+"p"'cdr$'CHR$(27)+"q"
  701.   ENDIF
  702. RETURN
  703. '
  704. PROCEDURE check_dir(cd$)
  705.   check_drive(cd$)
  706.   IF RIGHT$(cd$)<>CHR$(92)
  707.     show_error
  708.     PRINT "  ?  Missing '\' as last char at  "+CHR$(27)+"p"'cd$'CHR$(27)+"q"
  709.   ELSE
  710.     IF LEN(cd$)<>3
  711.       ok%=FSFIRST(MID$(cd$,1,LEN(cd$)-1),16)
  712.       IF ok%<>0
  713.         show_error
  714.         PRINT "  ?  Can't find the DIR  "+CHR$(27)+"p"'cd$'CHR$(27)+"q"
  715.       ENDIF
  716.     ENDIF
  717.   ENDIF
  718. RETURN
  719. '
  720. PROCEDURE check_nam(cn$)
  721.   check_drive(cn$)
  722.   ok%=FSFIRST(cn$,0)
  723.   IF ok%<>0
  724.     show_error
  725.     PRINT "  ?  Can't find the FILE  "+CHR$(27)+"p"'cn$'CHR$(27)+"q"
  726.     taste
  727.   ENDIF
  728. RETURN
  729. '
  730. PROCEDURE lade_cfg
  731.   LOCAL anz|,anz1|
  732.   '
  733.   IF EXIST(cfg$)
  734.     DIM cfg.zeile$(254)
  735.     OPEN "I",#1,cfg$
  736.     RECALL #1,cfg.zeile$(),255,dummy%
  737.     CLOSE #1
  738.     REPEAT
  739.       cfg.z$=UPPER$(MID$(cfg.zeile$(anz|),1,INSTR(cfg.zeile$(anz|),CHR$(32))))+MID$(cfg.zeile$(anz|),INSTR(cfg.zeile$(anz|),CHR$(32)))
  740.       IF cfg.k$(anz1|)+" "=MID$(cfg.z$,1,LEN(cfg.k$(anz1|))+1)
  741.         cfg.k$(anz1|)=TRIM$(UPPER$(MID$(cfg.z$,INSTR(cfg.z$,CHR$(32)))))
  742.         INC anz1|
  743.         anz|=0
  744.       ELSE
  745.         INC anz|
  746.       ENDIF
  747.       IF cfg.zeile$(anz|)=""
  748.         cfg.k$(anz1|)=""
  749.         anz|=0
  750.         INC anz1|
  751.       ENDIF
  752.     UNTIL anz1|=xk|+1
  753.     log_cfg.k
  754.     IF k.var!(8)=FALSE
  755.       del|=5
  756.     ENDIF
  757.     CLR anz|,anz1|
  758.     REPEAT
  759.       cfg.z$=UPPER$(cfg.zeile$(anz|))
  760.       IF cfg.v$(anz1|)=MID$(cfg.z$,1,LEN(cfg.v$(anz1|)))
  761.         cfg.v$(anz1|)=TRIM$(UPPER$(MID$(cfg.z$,INSTR(cfg.z$,CHR$(32)))))
  762.         INC anz1|
  763.         anz|=0
  764.       ELSE
  765.         INC anz|
  766.       ENDIF
  767.       IF cfg.zeile$(anz|)=""
  768.         cfg.v$(anz1|)=""
  769.         anz|=0
  770.         INC anz1|
  771.       ENDIF
  772.     UNTIL anz1|=xv|+1
  773.     log_cfg.v
  774.     CLR anz|,anz1|
  775.     REPEAT
  776.       cfg.z$=UPPER$(MID$(cfg.zeile$(anz|),1,INSTR(cfg.zeile$(anz|),CHR$(32))))+MID$(cfg.zeile$(anz|),INSTR(cfg.zeile$(anz|),CHR$(32)))
  777.       IF cfg.p$(anz1|)+" "=MID$(cfg.z$,1,LEN(cfg.p$(anz1|))+1)
  778.         cfg.p$(anz1|)=TRIM$(UPPER$(MID$(cfg.z$,INSTR(cfg.z$,CHR$(32)))))
  779.         INC anz1|
  780.         anz|=0
  781.       ELSE
  782.         INC anz|
  783.       ENDIF
  784.       IF cfg.zeile$(anz|)=""
  785.         cfg.p$(anz1|)=""
  786.         anz|=0
  787.         INC anz1|
  788.       ENDIF
  789.     UNTIL anz1|=xp|+1
  790.     log_cfg.p
  791.     DIM ind%(15),index$(15)
  792.     FOR anz|=0 TO 15
  793.       ind%(anz|)=anz|
  794.     NEXT anz|
  795.     CLR anz|,anz1|
  796.     REPEAT
  797.       cfg.z$=UPPER$(MID$(cfg.zeile$(anz|),1,INSTR(cfg.zeile$(anz|),CHR$(32))))+MID$(cfg.zeile$(anz|),INSTR(cfg.zeile$(anz|),CHR$(32)))
  798.       IF "PRE"=MID$(cfg.z$,1,3)
  799.         pre.var!=TRUE
  800.         art$=MID$(cfg.z$,1,INSTR(cfg.z$,CHR$(32)))
  801.         cfg.z$=TRIM$(MID$(cfg.z$,INSTR(cfg.z$,CHR$(32))))
  802.         pre$(anz1|)=MID$(cfg.z$,1,INSTR(cfg.z$,CHR$(32)))+art$+MID$(cfg.z$,INSTR(cfg.z$,CHR$(32))+1)
  803.         INC anz1|
  804.       ENDIF
  805.       INC anz|
  806.     UNTIL anz1|=16 OR cfg.zeile$(anz|)=""
  807.     FOR anz|=0 TO 15
  808.       IF pre$(anz|)=""
  809.         pre$(anz|)=CHR$(255)
  810.       ELSE
  811.         index$(anz|)=TRIM$(MID$(pre$(anz|),1,INSTR(pre$(anz|),CHR$(32))))
  812.       ENDIF
  813.     NEXT anz|
  814.     IF anz1|>0
  815.       QSORT index$(),anz1|,ind%()
  816.       FOR anz|=0 TO anz1|-1
  817.         index$(ind%(anz|))=MID$(pre$(ind%(anz|)),INSTR(pre$(ind%(anz|)),CHR$(32))+1)
  818.       NEXT anz|
  819.       FOR anz|=0 TO anz1|-1
  820.         pre$(anz|)=index$(ind%(anz|))
  821.       NEXT anz|
  822.     ENDIF
  823.     ERASE index$(),ind%()
  824.     DIM ind%(15),index$(15)
  825.     FOR anz|=0 TO 15
  826.       ind%(anz|)=anz|
  827.     NEXT anz|
  828.     CLR anz|,anz1|
  829.     REPEAT
  830.       cfg.z$=UPPER$(MID$(cfg.zeile$(anz|),1,INSTR(cfg.zeile$(anz|),CHR$(32))))+MID$(cfg.zeile$(anz|),INSTR(cfg.zeile$(anz|),CHR$(32)))
  831.       IF "LAST"=MID$(cfg.z$,1,4)
  832.         last.var!=TRUE
  833.         art$=MID$(cfg.z$,1,INSTR(cfg.z$,CHR$(32)))
  834.         cfg.z$=TRIM$(MID$(cfg.z$,INSTR(cfg.z$,CHR$(32))))
  835.         last$(anz1|)=MID$(cfg.z$,1,INSTR(cfg.z$,CHR$(32)))+art$+MID$(cfg.z$,INSTR(cfg.z$,CHR$(32))+1)
  836.         INC anz1|
  837.       ENDIF
  838.       INC anz|
  839.     UNTIL anz1|=16 OR cfg.zeile$(anz|)=""
  840.     FOR anz|=0 TO 15
  841.       IF last$(anz|)=""
  842.         last$(anz|)=CHR$(255)
  843.       ELSE
  844.         index$(anz|)=TRIM$(MID$(last$(anz|),1,INSTR(last$(anz|),CHR$(32))))
  845.       ENDIF
  846.     NEXT anz|
  847.     IF anz1|>0
  848.       QSORT index$(),anz1|,ind%()
  849.       FOR anz|=0 TO anz1|-1
  850.         index$(ind%(anz|))=MID$(last$(ind%(anz|)),INSTR(last$(ind%(anz|)),CHR$(32))+1)
  851.       NEXT anz|
  852.       FOR anz|=0 TO anz1|-1
  853.         last$(anz|)=index$(ind%(anz|))
  854.       NEXT anz|
  855.     ENDIF
  856.     ERASE index$(),ind%()
  857.     DIM ind%(15),index$(15)
  858.     FOR anz|=0 TO 15
  859.       ind%(anz|)=anz|
  860.     NEXT anz|
  861.     CLR anz|,anz1|
  862.     REPEAT
  863.       cfg.z$=UPPER$(MID$(cfg.zeile$(anz|),1,INSTR(cfg.zeile$(anz|),CHR$(32))))+MID$(cfg.zeile$(anz|),INSTR(cfg.zeile$(anz|),CHR$(32)))
  864.       IF "PPOINT"=MID$(cfg.z$,1,6)
  865.         ppoint.var!=TRUE
  866.         art$=MID$(cfg.z$,1,INSTR(cfg.z$,CHR$(32)))
  867.         cfg.z$=TRIM$(MID$(cfg.z$,INSTR(cfg.z$,CHR$(32))))
  868.         ppoint$(anz1|)=MID$(cfg.z$,1,INSTR(cfg.z$,CHR$(32)))+art$+MID$(cfg.z$,INSTR(cfg.z$,CHR$(32))+1)
  869.         INC anz1|
  870.       ENDIF
  871.       INC anz|
  872.     UNTIL anz1|=16 OR cfg.zeile$(anz|)=""
  873.     FOR anz|=0 TO 15
  874.       IF ppoint$(anz|)=""
  875.         ppoint$(anz|)=CHR$(255)
  876.       ELSE
  877.         index$(anz|)=TRIM$(MID$(ppoint$(anz|),1,INSTR(ppoint$(anz|),CHR$(32))))
  878.       ENDIF
  879.     NEXT anz|
  880.     IF anz1|>0
  881.       QSORT index$(),anz1|,ind%()
  882.       FOR anz|=0 TO anz1|-1
  883.         index$(ind%(anz|))=MID$(ppoint$(ind%(anz|)),INSTR(ppoint$(ind%(anz|)),CHR$(32))+1)
  884.       NEXT anz|
  885.       FOR anz|=0 TO anz1|-1
  886.         ppoint$(anz|)=index$(ind%(anz|))
  887.       NEXT anz|
  888.     ENDIF
  889.     ERASE index$(),ind%()
  890.     DIM ind%(15),index$(15)
  891.     FOR anz|=0 TO 15
  892.       ind%(anz|)=anz|
  893.     NEXT anz|
  894.     CLR anz|,anz1|
  895.     REPEAT
  896.       cfg.z$=UPPER$(MID$(cfg.zeile$(anz|),1,INSTR(cfg.zeile$(anz|),CHR$(32))))+MID$(cfg.zeile$(anz|),INSTR(cfg.zeile$(anz|),CHR$(32)))
  897.       IF "POINT"=MID$(cfg.z$,1,5)
  898.         point.var!=TRUE
  899.         art$=MID$(cfg.z$,1,INSTR(cfg.z$,CHR$(32)))
  900.         cfg.z$=TRIM$(MID$(cfg.z$,INSTR(cfg.z$,CHR$(32))))
  901.         point$(anz1|)=MID$(cfg.z$,1,INSTR(cfg.z$,CHR$(32)))+art$+MID$(cfg.z$,INSTR(cfg.z$,CHR$(32))+1)
  902.         INC anz1|
  903.       ENDIF
  904.       INC anz|
  905.     UNTIL anz1|=16 OR cfg.zeile$(anz|)=""
  906.     FOR anz|=0 TO 15
  907.       IF point$(anz|)=""
  908.         point$(anz|)=CHR$(255)
  909.       ELSE
  910.         index$(anz|)=TRIM$(MID$(point$(anz|),1,INSTR(point$(anz|),CHR$(32))))
  911.       ENDIF
  912.     NEXT anz|
  913.     IF anz1|>0
  914.       QSORT index$(),anz1|,ind%()
  915.       FOR anz|=0 TO anz1|-1
  916.         index$(ind%(anz|))=MID$(point$(ind%(anz|)),INSTR(point$(ind%(anz|)),CHR$(32))+1)
  917.       NEXT anz|
  918.       FOR anz|=0 TO anz1|-1
  919.         point$(anz|)=index$(ind%(anz|))
  920.       NEXT anz|
  921.     ENDIF
  922.     ERASE index$(),ind%()
  923.     DIM ind%(15),index$(15)
  924.     FOR anz|=0 TO 15
  925.       ind%(anz|)=anz|
  926.     NEXT anz|
  927.     CLR anz|,anz1|
  928.     REPEAT
  929.       cfg.z$=UPPER$(MID$(cfg.zeile$(anz|),1,INSTR(cfg.zeile$(anz|),CHR$(32))))+MID$(cfg.zeile$(anz|),INSTR(cfg.zeile$(anz|),CHR$(32)))
  930.       IF "PNODE"=MID$(cfg.z$,1,5)
  931.         pnode.var!=TRUE
  932.         art$=MID$(cfg.z$,1,INSTR(cfg.z$,CHR$(32)))
  933.         cfg.z$=TRIM$(MID$(cfg.z$,INSTR(cfg.z$,CHR$(32))))
  934.         pnode$(anz1|)=MID$(cfg.z$,1,INSTR(cfg.z$,CHR$(32)))+art$+MID$(cfg.z$,INSTR(cfg.z$,CHR$(32))+1)
  935.         INC anz1|
  936.       ENDIF
  937.       INC anz|
  938.     UNTIL anz1|=16 OR cfg.zeile$(anz|)=""
  939.     FOR anz|=0 TO 15
  940.       IF pnode$(anz|)=""
  941.         pnode$(anz|)=CHR$(255)
  942.       ELSE
  943.         index$(anz|)=TRIM$(MID$(pnode$(anz|),1,INSTR(pnode$(anz|),CHR$(32))))
  944.       ENDIF
  945.     NEXT anz|
  946.     IF anz1|>0
  947.       QSORT index$(),anz1|,ind%()
  948.       FOR anz|=0 TO anz1|-1
  949.         index$(ind%(anz|))=MID$(pnode$(ind%(anz|)),INSTR(pnode$(ind%(anz|)),CHR$(32))+1)
  950.       NEXT anz|
  951.       FOR anz|=0 TO anz1|-1
  952.         pnode$(anz|)=index$(ind%(anz|))
  953.       NEXT anz|
  954.     ENDIF
  955.     ERASE index$(),ind%()
  956.     DIM ind%(15),index$(15)
  957.     FOR anz|=0 TO 15
  958.       ind%(anz|)=anz|
  959.     NEXT anz|
  960.     CLR anz|,anz1|
  961.     REPEAT
  962.       cfg.z$=UPPER$(MID$(cfg.zeile$(anz|),1,INSTR(cfg.zeile$(anz|),CHR$(32))))+MID$(cfg.zeile$(anz|),INSTR(cfg.zeile$(anz|),CHR$(32)))
  963.       IF "NODE"=MID$(cfg.z$,1,4)
  964.         node.var!=TRUE
  965.         art$=MID$(cfg.z$,1,INSTR(cfg.z$,CHR$(32)))
  966.         cfg.z$=TRIM$(MID$(cfg.z$,INSTR(cfg.z$,CHR$(32))))
  967.         node$(anz1|)=MID$(cfg.z$,1,INSTR(cfg.z$,CHR$(32)))+art$+MID$(cfg.z$,INSTR(cfg.z$,CHR$(32))+1)
  968.         INC anz1|
  969.       ENDIF
  970.       INC anz|
  971.     UNTIL anz1|=16 OR cfg.zeile$(anz|)=""
  972.     FOR anz|=0 TO 15
  973.       IF node$(anz|)=""
  974.         node$(anz|)=CHR$(255)
  975.       ELSE
  976.         index$(anz|)=TRIM$(MID$(node$(anz|),1,INSTR(node$(anz|),CHR$(32))))
  977.       ENDIF
  978.     NEXT anz|
  979.     IF anz1|>0
  980.       QSORT index$(),anz1|,ind%()
  981.       FOR anz|=0 TO anz1|-1
  982.         index$(ind%(anz|))=MID$(node$(ind%(anz|)),INSTR(node$(ind%(anz|)),CHR$(32))+1)
  983.       NEXT anz|
  984.       FOR anz|=0 TO anz1|-1
  985.         node$(anz|)=index$(ind%(anz|))
  986.       NEXT anz|
  987.     ENDIF
  988.     ERASE index$(),ind%()
  989.     CLR anz|,anz1|
  990.   ELSE
  991.     ALERT 3,"Can't find|"+cfg$,1,"DESKTOP",al|
  992.     end_screen(1)
  993.   ENDIF
  994.   '
  995.   IF k.var!(0)
  996.     check_dir(cfg.k$(0))
  997.   ENDIF
  998.   IF k.var!(3)
  999.     check_dir(cfg.k$(3))
  1000.   ENDIF
  1001.   IF k.var!(4)
  1002.     check_dir(cfg.k$(4))
  1003.   ENDIF
  1004.   IF k.var!(7)
  1005.     check_drive(cfg.k$(7))
  1006.   ENDIF
  1007.   IF k.var!(8)
  1008.     check_drive(cfg.k$(8))
  1009.   ENDIF
  1010.   IF k.var!(10)
  1011.     check_dir(cfg.k$(10))
  1012.   ENDIF
  1013.   FOR anz|=0 TO 4
  1014.     IF p.var!(anz|)
  1015.       IF INSTR(cfg.p$(anz|),CHR$(32))<>0
  1016.         check_nam(MID$(cfg.p$(anz|),1,INSTR(cfg.p$(anz|),CHR$(32))-1))
  1017.       ELSE
  1018.         check_nam(cfg.p$(anz|))
  1019.       ENDIF
  1020.     ENDIF
  1021.   NEXT anz|
  1022.   '
  1023.   IF na!=FALSE
  1024.     IF v.var!(21)
  1025.       var%=FSFIRST(cfg.k$(3)+"*.*",0)
  1026.       IF var%<>0
  1027.         end_screen(0)
  1028.       ENDIF
  1029.     ENDIF
  1030.   ENDIF
  1031.   '
  1032.   log_anf
  1033.   anz|=0
  1034.   ok%=0
  1035.   cd$=""
  1036.   cn$=""
  1037.   IF ch!
  1038.     TOPW #1
  1039.     PRINT
  1040.     PRINT "  Please select a <KEY>..."
  1041.     PRINT "  ... to return back to the DESKTOP !!!"
  1042.     ~INP(2)
  1043.     end_screen(2)
  1044.   ENDIF
  1045. RETURN
  1046. '
  1047. PROCEDURE log_cfg.k
  1048.   LOCAL anz|
  1049.   FOR anz|=0 TO xk|
  1050.     IF cfg.k$(anz|)<>""
  1051.       k.var!(anz|)=TRUE
  1052.     ENDIF
  1053.   NEXT anz|
  1054. RETURN
  1055. '
  1056. PROCEDURE log_cfg.v
  1057.   LOCAL anz|
  1058.   FOR anz|=0 TO xv|
  1059.     IF cfg.v$(anz|)<>""
  1060.       v.var!(anz|)=TRUE
  1061.     ENDIF
  1062.   NEXT anz|
  1063. RETURN
  1064. '
  1065. PROCEDURE log_cfg.p
  1066.   LOCAL anz|
  1067.   FOR anz|=0 TO xp|
  1068.     IF cfg.p$(anz|)<>""
  1069.       p.var!(anz|)=TRUE
  1070.     ENDIF
  1071.   NEXT anz|
  1072. RETURN
  1073. '
  1074. PROCEDURE log_anf
  1075.   IF k.var!(8)
  1076.     msg$=fst$+" "+version$+" ******** START ********"
  1077.     datum$=DATE$
  1078.     IF EXIST(cfg.k$(8))
  1079.       OPEN "A",#3,cfg.k$(8)
  1080.     ELSE
  1081.       OPEN "O",#3,cfg.k$(8)
  1082.     ENDIF
  1083.     PRINT #3
  1084.     PRINT #3,"* "+MID$(datum$,1,2)+" "+monat$(VAL(MID$(datum$,4,2)))+" "+TIME$+" FST  "+msg$
  1085.     CLOSE #3
  1086.   ELSE
  1087.     PRINT "?  You don't need a LOG-FILE ???"
  1088.     DELAY del|
  1089.     CLS
  1090.   ENDIF
  1091. RETURN
  1092. '
  1093. PROCEDURE log_dat(msg$)
  1094.   IF k.var!(8)
  1095.     datum$=DATE$
  1096.     OPEN "A",#3,cfg.k$(8)
  1097.     PRINT #3,"* "+MID$(datum$,1,2)+" "+monat$(VAL(MID$(datum$,4,2)))+" "+TIME$+" FST  "+msg$
  1098.     CLOSE #3
  1099.   ENDIF
  1100. RETURN
  1101. '
  1102. PROCEDURE log_end
  1103.   msg$="********* END *********"
  1104.   IF k.var!(8)
  1105.     msg$=fst$+" "+version$+" "+msg$
  1106.     datum$=DATE$
  1107.     OPEN "A",#3,cfg.k$(8)
  1108.     PRINT #3,"* "+MID$(datum$,1,2)+" "+monat$(VAL(MID$(datum$,4,2)))+" "+TIME$+" FST  "+msg$
  1109.     PRINT #3
  1110.     CLOSE #3
  1111.   ENDIF
  1112. RETURN
  1113. '
  1114. PROCEDURE i_zeile(i.z$)
  1115.   TOPW #1
  1116.   zeit
  1117.   PRINT uhr$+"  "+i.z$
  1118.   DELAY del|
  1119.   log_dat(i.z$)
  1120. RETURN
  1121. '
  1122. PROCEDURE f_zeile(f.z$)
  1123.   TOPW #2
  1124.   PRINT CHR$(7);
  1125.   zeit
  1126.   PRINT uhr$+"  "+f.z$
  1127.   DELAY del|
  1128.   log_dat(f.z$)
  1129. RETURN
  1130. '
  1131. PROCEDURE titel(ft$)
  1132.   INFOW #1,ft$
  1133.   INFOW #2,ft$
  1134. RETURN
  1135. '
  1136. PROCEDURE d_file(file$)
  1137.   IF EXIST(file$)
  1138.     KILL file$
  1139.   ENDIF
  1140. RETURN
  1141. '
  1142. PROCEDURE del_file(file$)
  1143.   v%=FSFIRST(file$,0)
  1144.   IF v%=0
  1145.     IF v.var!(16) OR ext!
  1146.       df$=UPPER$(MID$(file$,1,RINSTR(file$,CHR$(92)))+CHAR{FGETDTA()+30})
  1147.       i_zeile("Deleted : "+df$)
  1148.     ENDIF
  1149.     KILL file$
  1150.     REPEAT
  1151.       v%=FSNEXT()
  1152.       IF v%=0
  1153.         IF v.var!(16) OR ext!
  1154.           df$=UPPER$(MID$(file$,1,RINSTR(file$,CHR$(92)))+CHAR{FGETDTA()+30})
  1155.           i_zeile("Deleted : "+df$)
  1156.         ENDIF
  1157.         KILL file$
  1158.       ENDIF
  1159.     UNTIL v%=-49
  1160.   ELSE
  1161.     IF v.var!(16) OR ext!=FALSE
  1162.       f_zeile("!  Can't find "+UPPER$(file$)+" to delete")
  1163.     ENDIF
  1164.   ENDIF
  1165. RETURN
  1166. '
  1167. PROCEDURE check_entpacken(inf$)
  1168.   LOCAL arca%,arcs$,a%
  1169.   exi!=FALSE
  1170.   diff_da(cfg.k$(3)+npd$+".*")
  1171.   IF v%=0                                  ! gepacktes DIFF-File vorhanden
  1172.     IF ce.var!
  1173.       IF f!=FALSE
  1174.         ppoint
  1175.       ELSE
  1176.         pnode
  1177.       ENDIF
  1178.       ce.var!=FALSE
  1179.       diff_da(cfg.k$(3)+npd$+".*")
  1180.     ENDIF
  1181.     REPEAT
  1182.       IF v%=0
  1183.         INC a%
  1184.         fg$=CHAR{FGETDTA()+30}
  1185.         arcs$=arcs$+fg$+CHR$(32)
  1186.         i_zeile("Found "+cfg.k$(3)+fg$+" to decompress")
  1187.         v.t!=FALSE
  1188.         v%=FSNEXT()
  1189.       ENDIF
  1190.     UNTIL v%<>0
  1191.     DIM arc$(a%)
  1192.     FOR arca%=0 TO a%-1
  1193.       arc$(arca%)=MID$(arcs$,1,INSTR(arcs$,CHR$(32))-1)
  1194.       arcs$=MID$(arcs$,INSTR(arcs$,CHR$(32))+1)
  1195.       welcher_packer(arc$(arca%))
  1196.     NEXT arca%
  1197.     ERASE arc$()
  1198.     vergleich
  1199.   ELSE
  1200.     f_zeile("!  No "+inf$+" to decompress")
  1201.     IF v.durch!
  1202.       v.t!=FALSE
  1203.       vergleich
  1204.     ELSE
  1205.       v.t!=TRUE
  1206.     ENDIF
  1207.   ENDIF
  1208. RETURN
  1209. '
  1210. PROCEDURE diff_da(diff$)
  1211.   v%=FSFIRST(diff$,0)
  1212. RETURN
  1213. '
  1214. PROCEDURE welcher_packer(fg$)
  1215.   LOCAL anz|,anz1|
  1216.   OPEN "I",#1,cfg.k$(3)+fg$
  1217.   DIM wert|(5)
  1218.   FOR anz|=0 TO 5
  1219.     wert|(anz|)=INP(#1)
  1220.   NEXT anz|
  1221.   CLOSE #1
  1222.   IF wert|(0)=26 AND wert|(1)=<9
  1223.     ERASE wert|()
  1224.     ex$="*.*"
  1225.     check_packer(1)
  1226.   ELSE IF wert|(0)=80 AND wert|(1)=75
  1227.     ERASE wert|()
  1228.     ex$=""
  1229.     check_packer(3)
  1230.   ELSE IF wert|(3)=108 AND VAL(CHR$(wert|(5)))=<9
  1231.     ERASE wert|()
  1232.     ex$=""
  1233.     check_packer(2)
  1234.     '
  1235.   ELSE IF wert|(0)=96 AND wert|(1)=234
  1236.     ERASE wert|()
  1237.     ex$=""
  1238.     check_packer(4)
  1239.   ELSE
  1240.     f_zeile("!  No ARC/LHARC/ZIP/ARJ-compatibility")
  1241.     ERASE wert|()
  1242.   ENDIF
  1243. RETURN
  1244. '
  1245. PROCEDURE check_packer(pvar|)
  1246.   IF p.var!(pvar|)
  1247.     IF INSTR(cfg.p$(pvar|),CHR$(32))<>0
  1248.       packer$=MID$(cfg.p$(pvar|),1,INSTR(cfg.p$(pvar|),CHR$(32))-1)
  1249.     ELSE
  1250.       packer$=cfg.p$(pvar|)
  1251.     ENDIF
  1252.     IF EXIST(packer$)
  1253.       i_zeile("Decompress with "+packer$)
  1254.       i_zeile("to "+pd$+"*.*")
  1255.       IF INSTR(cfg.p$(pvar|),CHR$(32))=0
  1256.         comm$=""
  1257.         prg$=TRIM$(cfg.p$(pvar|))
  1258.       ELSE
  1259.         comm$=TRIM$(MID$(cfg.p$(pvar|),INSTR(cfg.p$(pvar|),CHR$(32))))
  1260.         prg$=TRIM$(MID$(cfg.p$(pvar|),1,INSTR(cfg.p$(pvar|),CHR$(32))))
  1261.       ENDIF
  1262.       lauf$=LEFT$(packer$)
  1263.       dr$=MID$(packer$,INSTR(packer$,CHR$(92))+1)
  1264.       IF RINSTR(dr$,CHR$(92))<>0
  1265.         dr$=MID$(dr$,1,RINSTR(dr$,CHR$(92))-1)
  1266.       ELSE
  1267.         dr$=""
  1268.       ENDIF
  1269.       IF (v.var!(26) AND f!=FALSE) OR (v.var!(27) AND f!)
  1270.         test(pd$+l$+".*")
  1271.         IF var1%=0 AND suffix%<>0
  1272.           IF v.lbu!
  1273.             IF v.var!(16)
  1274.               i_zeile("Create "+pf$+"-BackUp ("+MID$(pf$,1,5)+".OLD)")
  1275.             ENDIF
  1276.             d_file(pd$+MID$(pf$,1,5)+".OLD")
  1277.             RENAME pd$+pf$ AS pd$+MID$(pf$,1,5)+".OLD"
  1278.           ELSE
  1279.             del_file(pd$+pf$)
  1280.           ENDIF
  1281.         ENDIF
  1282.       ENDIF
  1283.       comm$=comm$+" "+cfg.k$(3)+fg$+" "+pd$+ex$
  1284.       comm$=TRIM$(comm$)
  1285.       lauf$=LEFT$(prg$)
  1286.       starte
  1287.       IF v.cpd! AND k.var!(10)
  1288.         copy(cfg.k$(3)+fg$,cfg.k$(10))
  1289.         IF v.var!(16)
  1290.           i_zeile("Delete : "+cfg.k$(3)+fg$)
  1291.         ENDIF
  1292.         d_file(cfg.k$(3)+fg$)
  1293.       ENDIF
  1294.       IF v.dpd! AND v.cpd!=FALSE
  1295.         del_file(cfg.k$(3)+fg$)
  1296.       ENDIF
  1297.     ELSE
  1298.       IF v.var!(16)
  1299.         i_zeile("! Where is "+packer$)
  1300.       ENDIF
  1301.       f_zeile("?  Can't find "+packer$)
  1302.     ENDIF
  1303.   ELSE
  1304.     f_zeile("?  ERROR in CFG-File (ARC/LHARC/ZIP/ARJ)")
  1305.   ENDIF
  1306. RETURN
  1307. '
  1308. PROCEDURE test(pfad$)
  1309.   LOCAL l.f%
  1310.   var1%=FSFIRST(pfad$,0)
  1311.   IF var1%=0
  1312.     pfad$=CHAR{FGETDTA()+30}
  1313.     suffix%=VAL(MID$(pfad$,RINSTR(pfad$,CHR$(46))+1))
  1314.     IF suffix%<>0
  1315.       l.f%={FGETDTA()+26}
  1316.       f.l%=l.f%
  1317.     ENDIF
  1318.   ENDIF
  1319.   IF var1%=0 AND suffix%=0
  1320.     REPEAT
  1321.       var1%=FSNEXT()
  1322.       pfad$=CHAR{FGETDTA()+30}
  1323.       suffix%=VAL(MID$(pfad$,RINSTR(pfad$,CHR$(46))+1))
  1324.       IF suffix%<>0
  1325.         l.f%={FGETDTA()+26}
  1326.         f.l%=l.f%
  1327.       ENDIF
  1328.     UNTIL var1%=-49 OR suffix%<>0
  1329.   ENDIF
  1330.   pf$=pfad$
  1331. RETURN
  1332. '
  1333. PROCEDURE vergleich
  1334.   LOCAL a%,darc$,var1%
  1335.   IF (v.var!(26)=FALSE AND f!=FALSE) OR (v.var!(27)=FALSE AND f!)             !!!!!!!!!!!!
  1336.     test(pd$+npd$+".*")
  1337.     IF var1%=0 AND suffix%<>0
  1338.       REPEAT
  1339.         INC a%
  1340.         OPEN "I",#1,pd$+CHAR{FGETDTA()+30}
  1341.         DIM z$(0)
  1342.         RECALL #1,z$(),1,dummy%
  1343.         CLOSE #1
  1344.         darc$=darc$+CHAR{FGETDTA()+30}+CHR$(10)+z$(0)+CHR$(13)
  1345.         ERASE z$()
  1346.         var1%=FSNEXT()
  1347.       UNTIL var1%<>0
  1348.       DIM z$(a%-1)
  1349.       FOR darca%=0 TO a%-1
  1350.         z$(darca%)=MID$(darc$,1,INSTR(darc$,CHR$(13))-1)
  1351.         darc$=MID$(darc$,INSTR(darc$,CHR$(13))+1)
  1352.       NEXT darca%
  1353.       l!=TRUE
  1354.       DO
  1355.         test(pd$+l$+".*")
  1356.         IF var1%=0 AND suffix%<>0
  1357.           na2$=pf$
  1358.           n2a%=f.l%
  1359.           ERASE z1$()
  1360.           OPEN "I",#1,pd$+na2$
  1361.           DIM z1$(0)
  1362.           RECALL #1,z1$(),1,dummy%
  1363.           CLOSE #1
  1364.           FOR darca%=0 TO a%-1
  1365.             na1$=MID$(z$(darca%),1,INSTR(z$(darca%),CHR$(10))-1)
  1366.             IF z1$(0)=MID$(z$(darca%),INSTR(z$(darca%),CHR$(10))+1)
  1367.               test(pd$+MID$(z$(darca%),1,INSTR(z$(darca%),CHR$(10))-1))
  1368.               na1$=pf$
  1369.               n1a%=f.l%
  1370.               darca%=0
  1371.               IF v.var!(16)
  1372.                 i_zeile("Compare "+pd$+na2$)
  1373.                 i_zeile("  with  "+pd$+na1$)
  1374.               ENDIF
  1375.               OPEN "I",#1,pd$+na1$
  1376.               DIM z2$(0)
  1377.               RECALL #1,z2$(),1,dummy%
  1378.               CLOSE #1
  1379.               IF z2$(0)<>z1$(0) OR z2$(0)<>z1$(0) AND MID$(z2$,RINSTR(z2$,".")+1)<>MID$(z2$(0),INSTR(z2$(0),"number")+7,3)
  1380.                 f_zeile("?  "+na1$+" is not compatible with "+na2$)
  1381.               ELSE
  1382.                 exi!=TRUE
  1383.                 l!=FALSE
  1384.                 d_free
  1385.                 i_zeile("Convert "+na2$+" to "+l$+"."+MID$(na1$,RINSTR(na1$,CHR$(46))+1))
  1386.                 conf_timer(-1)
  1387.                 OPEN "I",#1,pd$+na2$
  1388.                 OPEN "O",#2,pd$+l$+"."+MID$(na1$,RINSTR(na1$,CHR$(46))+1)
  1389.                 OPEN "I",#3,pd$+na1$
  1390.                 conv_diff
  1391.                 CLOSE #1
  1392.                 PRINT #2;CHR$(26);
  1393.                 CLOSE #2
  1394.                 CLOSE #3
  1395.                 conf_timer(0)
  1396.                 IF v.cd!
  1397.                   copy(pd$+na1$,cfg.k$(10))
  1398.                 ENDIF
  1399.                 IF v.dd!
  1400.                   del_file(pd$+na1$)
  1401.                 ENDIF
  1402.                 IF v.lbu!
  1403.                   IF v.var!(16)
  1404.                     i_zeile("Create "+na2$+"-BackUp ("+MID$(na2$,1,5)+".OLD)")
  1405.                   ENDIF
  1406.                   d_file(pd$+MID$(na2$,1,5)+".OLD")
  1407.                   RENAME pd$+na2$ AS pd$+MID$(na2$,1,5)+".OLD"
  1408.                 ELSE
  1409.                   del_file(pd$+na2$)
  1410.                 ENDIF
  1411.                 darca%=a%
  1412.               ENDIF
  1413.             ENDIF
  1414.             ERASE z2$()
  1415.           NEXT darca%
  1416.         ELSE
  1417.           f_zeile("!  Can't find "+pd$+l$+".*")
  1418.         ENDIF
  1419.         EXIT IF darca%=a%
  1420.       LOOP
  1421.       ERASE z$(),z1$(),z2$()
  1422.       IF l!
  1423.         f_zeile("?  Can't find a compatible "+npd$)
  1424.       ENDIF
  1425.     ELSE
  1426.       f_zeile("!  Can't find "+pd$+npd$+".*")
  1427.     ENDIF
  1428.   ELSE
  1429.     exi!=TRUE
  1430.   ENDIF
  1431. RETURN
  1432. '
  1433. PROCEDURE conv_diff
  1434.   LOCAL a_anz%
  1435.   REPEAT
  1436.     RECALL #3,z1$(),1,dummy%
  1437.     SELECT ASC(LEFT$(z1$(0)))
  1438.     CASE 65                   ! A
  1439.       a_anz%=VAL(MID$(z1$(0),2))
  1440.       DIM a_a$(a_anz%-1)
  1441.       RECALL #3,a_a$(),a_anz%,dummy%
  1442.       STORE #2,a_a$()
  1443.       ERASE a_a$()
  1444.     CASE 67                   ! C
  1445.       a_anz%=VAL(MID$(z1$(0),2))
  1446.       DIM a_a$(a_anz%-1)
  1447.       RECALL #1,a_a$(),a_anz%,dummy%
  1448.       STORE #2,a_a$()
  1449.       ERASE a_a$()
  1450.     CASE 68                   ! D
  1451.       a_anz%=VAL(MID$(z1$(0),2))
  1452.       DIM a_a$(a_anz%-1)
  1453.       RECALL #1,a_a$(),a_anz%,dummy%
  1454.       ERASE a_a$()
  1455.     ENDSELECT
  1456.   UNTIL EOF(#3)
  1457. RETURN
  1458. '
  1459. PROCEDURE d_free
  1460.   IF DFREE(0)<=n1a%+n2a%
  1461.     f_zeile("?  Not enough space on disc/partition !!!")
  1462.     log_end
  1463.     DELAY del|
  1464.     end_screen(3)
  1465.   ENDIF
  1466. RETURN
  1467. '
  1468. PROCEDURE copy(source$,dest$)
  1469.   LOCAL anz%,file1$,file2$,handle%
  1470.   var%=FSFIRST(source$,0)
  1471.   ns$=MID$(source$,RINSTR(source$,CHR$(92))+1)
  1472.   source$=MID$(source$,1,RINSTR(source$,CHR$(92)))
  1473.   IF var%=0
  1474.     REPEAT
  1475.       IF var%=0
  1476.         anz%=0
  1477.         ns$=CHAR{FGETDTA()+30}
  1478.         fl%={FGETDTA()+26}
  1479.         f%=FRE(0)
  1480.         IF f%<32000
  1481.           f_zeile("?  Not enough memory !!!")
  1482.           var%=-1
  1483.         ELSE
  1484.           IF DFREE(ASC(LEFT$(UPPER$(dest$)))-64)<fl%
  1485.             f_zeile("?  Not enough space on "+LEFT$(UPPER$(dest$))+":\ !!!")
  1486.           ELSE
  1487.             IF v.var!(16)
  1488.               i_zeile("Copy "+UPPER$(source$+ns$))
  1489.               i_zeile("  to "+UPPER$(dest$+ns$))
  1490.             ENDIF
  1491.             IF fl%>32000
  1492.               m%=INT(fl%/32000)
  1493.               buff$=SPACE$(32000)
  1494.               OPEN "I",#1,source$+ns$
  1495.               BGET #1,VARPTR(buff$),32000
  1496.               CLOSE #1
  1497.               OPEN "O",#2,dest$+ns$
  1498.               BPUT #2,VARPTR(buff$),32000
  1499.               CLOSE #2
  1500.               buff$=""
  1501.               fl%=fl%-32000
  1502.               OPEN "I",#1,source$+ns$
  1503.               RELSEEK #1,32000
  1504.               OPEN "A",#2,dest$+ns$
  1505.               REPEAT
  1506.                 IF fl%>32000
  1507.                   frei%=32000
  1508.                   fl%=fl%-32000
  1509.                   buff$=SPACE$(frei%)
  1510.                 ELSE
  1511.                   frei%=fl%
  1512.                   buff$=SPACE$(frei%)
  1513.                 ENDIF
  1514.                 BGET #1,VARPTR(buff$),frei%
  1515.                 BPUT #2,VARPTR(buff$),frei%
  1516.                 buff$=""
  1517.                 INC anz%
  1518.               UNTIL anz%=m%
  1519.               CLOSE #1
  1520.               CLOSE #2
  1521.             ELSE
  1522.               buff$=SPACE$(fl%)
  1523.               BLOAD source$+ns$,VARPTR(buff$)
  1524.               BSAVE dest$+ns$,VARPTR(buff$),fl%
  1525.               buff$=""
  1526.             ENDIF
  1527.             '
  1528.             file1$=source$+ns$                              ! Lesen
  1529.             file2$=dest$+ns$                                ! Schreiben
  1530.             '
  1531.             buffer$=SPACE$(4)
  1532.             '
  1533.             handle%=GEMDOS(61,L:VARPTR(file1$),0)           ! Lesen
  1534.             ~GEMDOS(87,L:VARPTR(buffer$),handle%,0)
  1535.             ~GEMDOS(62,handle%)
  1536.             '
  1537.             handle%=GEMDOS(61,L:VARPTR(file2$),1)           ! Schreiben
  1538.             ~GEMDOS(87,L:VARPTR(buffer$),handle%,1)
  1539.             ~GEMDOS(62,handle%)
  1540.             '
  1541.             buffer$=""
  1542.           ENDIF
  1543.           var%=FSNEXT()
  1544.         ENDIF
  1545.       ENDIF
  1546.     UNTIL var%<>0
  1547.   ELSE
  1548.     IF ext!=FALSE OR (v.var!(16) AND ext!)
  1549.       f_zeile("!  Can't find "+source$+ns$+" to copy")
  1550.     ENDIF
  1551.   ENDIF
  1552. RETURN
  1553. '
  1554. PROCEDURE check
  1555.   IF RIGHT$(pd$)<>CHR$(92)
  1556.     f_zeile("?  Error in CFG-File (DIFF-Dir) !!!")
  1557.     log_end
  1558.     DELAY del|
  1559.     end_screen(2)
  1560.   ENDIF
  1561.   IF (LEN(npd$)=0 OR LEN(npd$)>8) OR (LEN(l$)=0 OR LEN(l$)>8)
  1562.     f_zeile("?  Error in CFG-File (DIFF-/LIST-Name) !!!")
  1563.     log_end
  1564.     DELAY del|
  1565.     end_screen(2)
  1566.   ENDIF
  1567. RETURN
  1568. '
  1569. PROCEDURE close_screen
  1570.   CLOSEW 2
  1571.   CLOSEW 1
  1572.   CLOSEW 0
  1573.   CLS
  1574. RETURN
  1575. '
  1576. PROCEDURE end_screen(q%)
  1577.   close_screen
  1578.   QUIT q%
  1579. RETURN
  1580. '
  1581. ' ********************  PROCEDUREs fuer POINT-Act  ************************
  1582. PROCEDURE point_act
  1583.   pd$=cfg.k$(0)
  1584.   npd$=cfg.k$(1)
  1585.   l$=cfg.k$(2)
  1586.   v.dpd!=v.var!(2)
  1587.   v.dd!=v.var!(4)
  1588.   v.cpd!=v.var!(6)
  1589.   v.cd!=v.var!(8)
  1590.   v.lbu!=v.var!(10)
  1591.   v.durch!=v.var!(14)
  1592.   ce.var!=ppoint.var!
  1593.   i_zeile(st$+pu$)
  1594.   IF v.var!(26)
  1595.     npd$=cfg.k$(2)
  1596.     IF k.var!(0)=FALSE OR k.var!(2)=FALSE OR k.var!(3)=FALSE
  1597.       f_zeile("?  ERROR in CFG-File (POINT)")
  1598.       i_zeile(en$+pu$)
  1599.       IF v.var!(1)=FALSE
  1600.         log_end
  1601.         end_screen(2)
  1602.       ELSE
  1603.         z.var!=TRUE
  1604.       ENDIF
  1605.     ENDIF
  1606.   ELSE
  1607.     FOR anz%=0 TO 3
  1608.       IF k.var!(anz%)=FALSE
  1609.         f_zeile("?  ERROR in CFG-File (POINT)")
  1610.         i_zeile(en$+pu$)
  1611.         anz%=3
  1612.         IF v.var!(1)=FALSE
  1613.           log_end
  1614.           end_screen(2)
  1615.         ELSE
  1616.           z.var!=TRUE
  1617.         ENDIF
  1618.       ENDIF
  1619.     NEXT anz%
  1620.   ENDIF
  1621.   check
  1622.   IF z.var!=FALSE
  1623.     check_entpacken(npd$)
  1624.   ENDIF
  1625.   IF exi! OR v.durch!
  1626.     IF k.var!(7) AND v.t!=FALSE
  1627.       test(pd$+cfg.k$(2)+".*")
  1628.       IF var1%=0 AND suffix%<>0
  1629.         cfg.k$(2)=pf$
  1630.         dim.gl%=f.l%/25
  1631.         i_zeile("Load "+pd$+cfg.k$(2))
  1632.         convertiere
  1633.         anz%=0
  1634.         delete_diff(cfg.k$(10)+npd$+".*")
  1635.       ELSE
  1636.         f_zeile("!  Can't find "+pd$+l$+".*")
  1637.       ENDIF
  1638.     ENDIF
  1639.   ENDIF
  1640.   anz%=0
  1641.   IF point.var! AND exi!
  1642.     DIM pre$(15)
  1643.     ext!=TRUE
  1644.     i_zeile("POINT"+act$+"...")
  1645.     REPEAT
  1646.       pre$(anz%)=point$(anz%)
  1647.       utility("POINT",10)
  1648.       INC anz%
  1649.     UNTIL anz%=16 OR point$(anz%)=CHR$(255)
  1650.     i_zeile("...POINT"+act$)
  1651.     ext!=FALSE
  1652.   ENDIF
  1653.   ERASE pre$(),point$()
  1654.   i_zeile(en$+pu$)
  1655. RETURN
  1656. '
  1657. PROCEDURE convertiere
  1658.   DIM agl$(dim.gl%),new.list$(dim.gl%)
  1659.   OPEN "I",#1,cfg.k$(0)+cfg.k$(2)
  1660.   RECALL #1,agl$(),dim.gl%,dummy%
  1661.   CLOSE #1
  1662.   IF RIGHT$(cfg.k$(7))=CHR$(92)
  1663.     f_zeile("?  Error in CFG-File (UserList-Name) !!!")
  1664.     log_end
  1665.     DELAY del|
  1666.     end_screen(2)
  1667.   ENDIF
  1668.   i_zeile("Convert "+cfg.k$(2)+" to "+MID$(cfg.k$(7),RINSTR(cfg.k$(7),CHR$(92))+1))
  1669.   a%=0
  1670.   anz%=0
  1671.   conf_timer(-1)
  1672.   REPEAT
  1673.     zeile$=agl$(anz%)
  1674.     IF RINSTR(zeile$,"_")<>0 AND LEFT$(zeile$)<>";"
  1675.       nn$=MID$(zeile$,RINSTR(zeile$,"_")+1)
  1676.       nn$=MID$(nn$,1,INSTR(nn$,","))
  1677.       vn$=MID$(zeile$,1,RINSTR(zeile$,"_")-1)
  1678.       vn$=MID$(vn$,RINSTR(vn$,",")+1)
  1679.       IF UPPER$(MID$(zeile$,1,5))="HOST,"
  1680.         node$=MID$(zeile$,INSTR(zeile$,","))
  1681.         node$=MID$(node$,INSTR(node$,",")+1)
  1682.         node$=MID$(node$,INSTR(node$,",")+1)
  1683.         node$=MID$(node$,1,INSTR(node$,",")-1)
  1684.         new.list$(a%)=nn$+" "+vn$+SPACE$(45-LEN(nn$+vn$))+node$
  1685.         INC a%
  1686.       ELSE IF LEFT$(zeile$)="," AND VAL(MID$(zeile$,2,1))<>0
  1687.         add$=MID$(zeile$,2)
  1688.         add$=MID$(add$,1,INSTR(add$,",")-1)
  1689.         add$=node$+"."+add$
  1690.         new.list$(a%)=nn$+" "+vn$+SPACE$(45-LEN(nn$+vn$))+add$
  1691.         INC a%
  1692.       ENDIF
  1693.     ENDIF
  1694.     INC anz%
  1695.   UNTIL agl$(anz%+1)=""
  1696.   conf_timer(0)
  1697.   '
  1698.   ERASE agl$()
  1699.   DIM n.l$(a%-1)
  1700.   REPEAT
  1701.     n.l$(a1%)=new.list$(a1%)
  1702.     INC a1%
  1703.   UNTIL new.list$(a1%)=""
  1704.   ERASE new.list$()
  1705.   '
  1706.   QSORT n.l$()
  1707.   IF EXIST(cfg.k$(7))
  1708.     IF v.var!(12)
  1709.       IF v.var!(16)
  1710.         i_zeile("Create "+MID$(cfg.k$(7),RINSTR(cfg.k$(7),CHR$(92))+1)+"-BackUp (*.OLD)")
  1711.       ENDIF
  1712.       d_file(MID$(cfg.k$(7),1,RINSTR(cfg.k$(7),CHR$(46)))+"OLD")
  1713.       RENAME cfg.k$(7) AS MID$(cfg.k$(7),1,RINSTR(cfg.k$(7),CHR$(46)))+"OLD"
  1714.     ENDIF
  1715.   ENDIF
  1716.   i_zeile("Create "+cfg.k$(7))
  1717.   OPEN "O",#1,cfg.k$(7)
  1718.   STORE #1,n.l$()
  1719.   CLOSE #1
  1720.   ERASE n.l$()
  1721. RETURN
  1722. '
  1723. PROCEDURE ppoint
  1724.   anz%=0
  1725.   DIM pre$(15)
  1726.   ext!=TRUE
  1727.   i_zeile("PRE-POINT"+act$+"...")
  1728.   REPEAT
  1729.     pre$(anz%)=ppoint$(anz%)
  1730.     utility("PPOINT",11)
  1731.     INC anz%
  1732.   UNTIL anz%=16 OR ppoint$(anz%)=CHR$(255)
  1733.   i_zeile("...PRE-POINT"+act$)
  1734.   ext!=FALSE
  1735.   ERASE pre$(),ppoint$()
  1736. RETURN
  1737. ' ********************  PROCEDUREs fuer NODE-Act   ************************
  1738. PROCEDURE node_act
  1739.   pd$=cfg.k$(4)
  1740.   npd$=cfg.k$(5)
  1741.   l$=cfg.k$(6)
  1742.   v.dpd!=v.var!(3)
  1743.   v.dd!=v.var!(5)
  1744.   v.cpd!=v.var!(7)
  1745.   v.cd!=v.var!(9)
  1746.   v.lbu!=v.var!(11)
  1747.   v.durch!=v.var!(15)
  1748.   ce.var!=pnode.var!
  1749.   f!=TRUE
  1750.   i_zeile(st$+nu$)
  1751.   IF v.var!(27)
  1752.     npd$=cfg.k$(6)
  1753.     IF k.var!(4)=FALSE OR k.var!(6)=FALSE OR k.var!(3)=FALSE
  1754.       f_zeile("?  ERROR in CFG-File (NODE)")
  1755.       i_zeile(en$+nu$)
  1756.       IF v.var!(1)=FALSE
  1757.         log_end
  1758.         end_screen(2)
  1759.       ELSE
  1760.         z.var!=TRUE
  1761.       ENDIF
  1762.     ENDIF
  1763.   ELSE
  1764.     FOR anz%=0 TO 3
  1765.       IF k.var!(anz%)=FALSE
  1766.         f_zeile("?  ERROR in CFG-File (NODE)")
  1767.         i_zeile(en$+nu$)
  1768.         anz%=3
  1769.         IF v.var!(1)=FALSE
  1770.           log_end
  1771.           end_screen(2)
  1772.         ELSE
  1773.           z.var!=TRUE
  1774.         ENDIF
  1775.       ENDIF
  1776.     NEXT anz%
  1777.   ENDIF
  1778.   check
  1779.   IF z.var!=FALSE
  1780.     check_entpacken(npd$)
  1781.   ENDIF
  1782.   IF exi! OR v.durch!
  1783.     IF k.var!(9) AND v.t!=FALSE
  1784.       delete_diff(cfg.k$(10)+npd$+".*")
  1785.       IF VAL(LEFT$(cfg.k$(9)))>0 AND VAL(MID$(cfg.k$(9),3,2))>0
  1786.         z$=LEFT$(cfg.k$(9))
  1787.         r$=MID$(cfg.k$(9),3,2)
  1788.         i_zeile("Create a little NODELIST ("+LEFT$(cfg.k$(9))+":"+MID$(cfg.k$(9),3,2)+")")
  1789.         test(cfg.k$(4)+cfg.k$(6)+".*")
  1790.         my_list
  1791.       ELSE IF VAL(LEFT$(cfg.k$(9)))>0 AND MID$(cfg.k$(9),3,3)="ALL"
  1792.         z$=LEFT$(cfg.k$(9))
  1793.         i_zeile("Create a little NODELIST ("+LEFT$(cfg.k$(9))+":"+"ALL)")
  1794.         test(cfg.k$(4)+cfg.k$(6)+".*")
  1795.         big_list
  1796.       ELSE
  1797.         f_zeile("?  ERROR in CFG-File (MNL)")
  1798.       ENDIF
  1799.     ENDIF
  1800.     IF v.t!=FALSE AND v.var!(13)
  1801.       prg$=cfg.p$(0)
  1802.       lauf$=LEFT$(prg$)
  1803.       dr$=MID$(cfg.k$(4),INSTR(cfg.k$(4),CHR$(92)))
  1804.       IF RINSTR(dr$,CHR$(92))<>0
  1805.         dr$=MID$(dr$,1,RINSTR(dr$,CHR$(92))-1)
  1806.       ELSE
  1807.         dr$=""
  1808.       ENDIF
  1809.       IF INSTR(prg$,CHR$(32))=0
  1810.         comm$=""
  1811.       ELSE
  1812.         comm$=MID$(prg$,INSTR(prg$,CHR$(32)))
  1813.         prg$=MID$(prg$,1,INSTR(prg$,CHR$(32)))
  1814.       ENDIF
  1815.       prg$=MID$(prg$,RINSTR(prg$,CHR$(92))+1)
  1816.       prg$=MID$(prg$,1,RINSTR(prg$,CHR$(46))+3)
  1817.       test(pd$+npd$+".*")
  1818.       i_zeile("Compile "+pf$+" with "+prg$)
  1819.       starte
  1820.     ENDIF
  1821.   ENDIF
  1822.   anz%=0
  1823.   IF node.var! AND exi!
  1824.     DIM pre$(15)
  1825.     ext!=TRUE
  1826.     i_zeile("NODE"+act$+"...")
  1827.     REPEAT
  1828.       pre$(anz%)=node$(anz%)
  1829.       utility("NODE",9)
  1830.       INC anz%
  1831.     UNTIL anz%=16 OR node$(anz%)=CHR$(255)
  1832.     i_zeile("...NODE"+act$)
  1833.     ext!=FALSE
  1834.   ENDIF
  1835.   ERASE pre$(),node$()
  1836.   i_zeile(en$+nu$)
  1837. RETURN
  1838. '
  1839. PROCEDURE my_list
  1840.   i_zeile("Create MNL"+cfg.k$(9)+"."+STRING$(3-LEN(STR$(suffix%)),CHR$(48))+STR$(suffix%))
  1841.   d_file(cfg.k$(4)+"MNL"+cfg.k$(9)+".*")
  1842.   var!=FALSE
  1843.   DIM n.a$(0)
  1844.   OPEN "O",#2,cfg.k$(4)+"mnl"+cfg.k$(9)+"."+STRING$(3-LEN(STR$(suffix%)),CHR$(48))+STR$(suffix%)
  1845.   OPEN "I",#1,cfg.k$(4)+pf$
  1846.   REPEAT
  1847.     RECALL #1,n.a$(),1,dummy%
  1848.     IF MID$(n.a$(0),1,6)="Zone,"+z$
  1849.       PRINT #2,CHR$(59)
  1850.       var!=TRUE
  1851.     ENDIF
  1852.   UNTIL var! OR EOF(#1)
  1853.   IF var!
  1854.     var!=FALSE
  1855.     REPEAT
  1856.       PRINT #2,n.a$(0)
  1857.       RECALL #1,n.a$(),1,dummy%
  1858.       IF MID$(n.a$(0),1,7)="Region,"
  1859.         var!=TRUE
  1860.       ENDIF
  1861.     UNTIL var! OR EOF(#1)
  1862.     IF var!
  1863.       var!=FALSE
  1864.       REPEAT
  1865.         IF MID$(n.a$(0),1,9)="Region,"+r$
  1866.           var!=TRUE
  1867.         ELSE
  1868.           RECALL #1,n.a$(),1,dummy%
  1869.         ENDIF
  1870.       UNTIL var!=TRUE OR EOF(#1)
  1871.     ENDIF
  1872.     IF var!
  1873.       REPEAT
  1874.         PRINT #2,n.a$(0)
  1875.         RECALL #1,n.a$(),1,dummy%
  1876.       UNTIL MID$(n.a$(0),1,7)="Region," OR MID$(n.a$(0),1,5)="Zone," OR EOF(#1)
  1877.     ENDIF
  1878.   ENDIF
  1879.   CLOSE #1
  1880.   CLOSE #2
  1881.   ERASE n.a$()
  1882.   IF v.var!(0) AND v.var!(13) AND nl!=FALSE
  1883.     npd$="MNL"+cfg.k$(9)
  1884.   ENDIF
  1885. RETURN
  1886. '
  1887. PROCEDURE big_list
  1888.   i_zeile("Create MNL"+cfg.k$(9)+"."+STRING$(3-LEN(STR$(suffix%)),CHR$(48))+STR$(suffix%))
  1889.   d_file(cfg.k$(4)+"MNL"+cfg.k$(9)+".*")
  1890.   var!=FALSE
  1891.   DIM n.a$(0)
  1892.   OPEN "O",#2,cfg.k$(4)+"mnl"+cfg.k$(9)+"."+STRING$(3-LEN(STR$(suffix%)),CHR$(48))+STR$(suffix%)
  1893.   OPEN "I",#1,cfg.k$(4)+pf$
  1894.   REPEAT
  1895.     RECALL #1,n.a$(),1,dummy%
  1896.     IF MID$(n.a$(0),1,6)="Zone,"+z$
  1897.       PRINT #2,CHR$(59)
  1898.       var!=TRUE
  1899.     ENDIF
  1900.   UNTIL var! OR EOF(#1)
  1901.   IF var!
  1902.     REPEAT
  1903.       PRINT #2,n.a$(0)
  1904.       RECALL #1,n.a$(),1,dummy%
  1905.     UNTIL MID$(n.a$(0),1,5)="Zone," OR EOF(#1)
  1906.   ENDIF
  1907.   CLOSE #2
  1908.   CLOSE #1
  1909.   ERASE n.a$()
  1910.   IF v.var!(0) AND v.var!(13) AND nl!=FALSE
  1911.     npd$="MNL"+cfg.k$(9)
  1912.   ENDIF
  1913. RETURN
  1914. '
  1915. PROCEDURE pnode
  1916.   anz%=0
  1917.   DIM pre$(15)
  1918.   ext!=TRUE
  1919.   i_zeile("PRE-NODE"+act$+"...")
  1920.   REPEAT
  1921.     pre$(anz%)=pnode$(anz%)
  1922.     utility("PNODE",10)
  1923.     INC anz%
  1924.   UNTIL anz%=16 OR pnode$(anz%)=CHR$(255)
  1925.   i_zeile("...PRE-NODE"+act$)
  1926.   ext!=FALSE
  1927.   ERASE pre$(),pnode$()
  1928. RETURN
  1929. '
  1930. ' ********************  PROCEDUREs fuer LIST-NODES  ***********************
  1931. PROCEDURE zone_list
  1932.   IF k.var!(4) AND k.var!(6)
  1933.     test(cfg.k$(4)+cfg.k$(6)+".*")
  1934.     IF suffix%=0
  1935.       f_zeile("?  Can't find a NODELIST !!!")
  1936.       log_end
  1937.       end_screen(1)
  1938.     ENDIF
  1939.     make_list
  1940.   ELSE
  1941.     f_zeile("?  ERROR in CFG-File (NODE)")
  1942.     log_end
  1943.     end_screen(2)
  1944.   ENDIF
  1945. RETURN
  1946. '
  1947. PROCEDURE make_list
  1948.   LOCAL d%,anz%,anz1%
  1949.   d%=150
  1950.   DIM n.l$(d%)
  1951.   i_zeile("Analysing "+cfg.k$(4)+pf$)
  1952.   OPEN "I",#1,cfg.k$(4)+pf$
  1953.   RECALL #1,n.l$(),d%+1,dummy%
  1954.   list.zone$=cfg.k$(4)+"LISTZONE.DAT"
  1955.   i_zeile("and creating "+cfg.k$(4)+"LISTZONE.DAT")
  1956.   OPEN "O",#2,list.zone$
  1957.   REPEAT
  1958.     IF MID$(n.l$(anz%),1,5)="Zone,"
  1959.       z$=MID$(n.l$(anz%),6,1)
  1960.       zn$=MID$(n.l$(anz%),8)
  1961.       zn$=MID$(zn$,1,INSTR(zn$,CHR$(44))-1)
  1962.       del_space(zn$)
  1963.       i_zeile(z$+" ( "+neu_ds$+" )")
  1964.       PRINT #2,"ZONE ";z$;" ( ";neu_ds$;" )"
  1965.       neu_ds$=""
  1966.       ds$=""
  1967.       INC anz1%
  1968.       REPEAT
  1969.         IF MID$(n.l$(anz%),1,7)="Region,"
  1970.           r$=MID$(n.l$(anz%),8,2)
  1971.           rn$=MID$(n.l$(anz%),11)
  1972.           rn$=MID$(rn$,1,INSTR(rn$,CHR$(44))-1)
  1973.           del_space(rn$)
  1974.           PRINT #2;r$;"  ";neu_ds$
  1975.           neu_ds$=""
  1976.           ds$=""
  1977.         ENDIF
  1978.         INC anz%
  1979.         IF d%=anz%
  1980.           ERASE n.l$()
  1981.           DIM n.l$(d%)
  1982.           RECALL #1,n.l$(),d%+1,dummy%
  1983.           anz%=0
  1984.         ENDIF
  1985.       UNTIL MID$(n.l$(anz%),1,5)="Zone," OR n.l$(anz%)=""
  1986.       PRINT #2
  1987.       anz%=anz%-2
  1988.     ELSE
  1989.       INC anz%
  1990.       IF d%=anz%
  1991.         ERASE n.l$()
  1992.         DIM n.l$(d%)
  1993.         RECALL #1,n.l$(),d%+1,dummy%
  1994.         anz%=0
  1995.       ENDIF
  1996.     ENDIF
  1997.   UNTIL n.l$(anz%)=""
  1998.   CLOSE #1
  1999.   CLOSE #2
  2000.   i_zeile("Ready to analyse "+pf$)
  2001.   IF EXIST(list.zone$)
  2002.     IF {FGETDTA()+26}=0
  2003.       KILL list.zone$
  2004.     ENDIF
  2005.   ENDIF
  2006. RETURN
  2007. '
  2008. PROCEDURE del_space(ds$)
  2009.   FOR r%=1 TO LEN(ds$)+1
  2010.     IF MID$(ds$,r%,1)=CHR$(95)
  2011.       neu_ds$=neu_ds$+CHR$(32)
  2012.     ELSE
  2013.       neu_ds$=neu_ds$+MID$(ds$,r%,1)
  2014.     ENDIF
  2015.   NEXT r%
  2016. RETURN
  2017. '
  2018. ' ************************************************************************
  2019. ' ************************************************************************
  2020.